其他
2021南极动物厂游戏高赛竞赛决赛分析01
本文为看雪论坛精华文章
看雪论坛作者ID:淡然他徒弟
0x01 前言
0x02 过程
题目描述:
题目分析:
题目描述:
(1) shootgame是一个游戏,hack.exe是游戏shootergame的一个外挂程序。
(2) 运行shootgame游戏,运行hack.exe,成功执行外挂功能并分析外挂实现过程。
(3) 实现一个与hack.exe的功能相同的,但是游戏逻辑原理不同的外挂程序。
(游戏逻辑原理不同:指外挂程序对读写游戏数据结构或代码的攻击内容不同,并不是读写内存方式、注入内存方式、外挂核心代码载体差异的不同。)
题目分析:
对hack.exe的详细分析
使用工具:IDA Pro 7.2、CheatEngine 7.2、x64dbg、PYArk
1. 直接打开了下hack.exe一闪而过,开游戏,再打开也是一闪而过。
2. IDA载入分析,一路查看执行的流程。
对代码前后逻辑分析完以后,发现会读取一个文件,读取失败就会返回。
此处为“读取出错进程就退出”的逻辑。文件名为hack.dat。
3. 接着读取出来的Buffer会跑进一个函数,进行解密之后会用解密出来的Buffer其中的字符当做进程名称。
然后会从进程列表中寻找对应的名称,暂不知道是哪个进程。(猜测是游戏进程,后面可以确定。)4. 接着就是一大堆的解密,解密出来的数据会作为GetProcessAddress的参数(函数名称) 获取函数地址。
然后还调用了刚刚解密进程名称的函数,解密一个Buffer。然后这个Buffer会被写进目标进程内。
被写入的内存地址是由hack.exe申请出来的可执行内存,所以把这个Buffer Dump出来看看。
首先我们先在main函数下个断点,然后用x64dbg设置新的运行点,单步两下。
这时候打个广告“欢迎使用PyArk,一个无所不能的Ark,官网:http://www.pysafe.cn/”。我们使用Pyark把这个解密以后的内存dump出来。
1. IDA载入,发现这个DLL必须要依附于ShooterClient.exe,验证了前面寻找的进程就是游戏进程的猜测哦~
(1)求flag,这要分析解密hack.dat的函数,看了下原解密代码被优化了。看汇编挺吃力的,于是最后再看。
(2)写个"与hack.exe外挂功能相同,但实现原理与hack.exe不同的程序源码"的功能,那就要分析hack.dll是怎么实现的了。
hack.dll既然按住右键能自瞄,那就从这里入手,查看导入表,看看有没有判断热键的API,从而找到自瞄的攻击流程。
那这个要写入进去的float类型的数据肯定跟敌人坐标有关了。
GetName函数的分析
并且判断他的名字后缀是不是awn_C_ 来判断是否为活体目标(是否为敌人) 并且把活体目标的坐标转换成了屏幕坐标,然后取出屏幕坐标距离准星最近的敌人为自瞄对象。
用VS写个DLL,遍历看看,记得把多线程DLL调成多线程。
成功打印了。
本文附件可点击左下方阅读原文自行下载!
看雪ID:淡然他徒弟
https://bbs.pediy.com/user-home-620278.htm
*本文由看雪论坛 淡然他徒弟 原创,转载请注明来自看雪社区。《安卓高级研修班》2021年6月班火热招生中!
# 往期推荐
球分享
球点赞
球在看
点击“阅读原文”,了解更多!